/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jogo.da.velha;

import java.util.Scanner;

/**
 *
 * @author Alcides Lopes
 */
public final class Jogo {
        private Tabuleiro tabuleiro;
        private int[] jogada = new int[2];
        private int jogador = 1;
        
        public Scanner entrada = new Scanner(System.in);
        
        public Jogo() {
            tabuleiro = new Tabuleiro();
            
            while(jogar());
            
        }
        
        

        public boolean jogar() {
            
            if(terminou(tabuleiro) == 0) {
                jogada();
                jogador = jogador * (-1);
                return true;
            }
            else if(terminou(tabuleiro) == 1)
            {
               System.out.println("Jogador X venceu");
               return false;
            }
            else if(terminou(tabuleiro) == -1) {
               System.out.println("Jogador O venceu");
               return false;
            }
            else{
                System.out.println("Empate");
                return false;
            }
              
                
        }
        
        public void jogada() {
            do {
                do {
                    System.out.print("Linha (0-2): ");
                    jogada[0] = entrada.nextInt();
                
                    if(jogada[0] > 2 || jogada[0] < 0) {
                        System.out.println("Linha errada... entre 0 e 2");
                    }
                }while(jogada[0] > 2 || jogada[0] < 0);
                    
                do {
                    System.out.print("Coluna (0-2): ");
                    jogada[1] = entrada.nextInt();
                
                    if(jogada[1] > 2 || jogada[1] < 0) {
                        System.out.println("Coluna errada... entre 0 e 2");
                    }
                }while(jogada[1] > 2 || jogada[1] < 0);
                    
                if(!checaJogada(jogada,tabuleiro)) {
                    System.out.println("Local ja marcado");
                }
                
            }while(!checaJogada(jogada,tabuleiro));
            tabuleiro.setPosicao(jogada,jogador);
        }
        
        public boolean checaJogada(int[] jogada,Tabuleiro tabuleiro) {
            if(this.tabuleiro.getPosicao(jogada) == 0) {
                return true;
            }
            else {
                return false;
            }      
        }

    
        public int terminou(Tabuleiro tabuleiro) {
        
            if(tabuleiro.verificaLinhas() == 1)
                return 1;
            if(tabuleiro.verificaLinhas() == -1)
                return -1;
            if(tabuleiro.verificaColunas() == 1)
                return 1;
            if(tabuleiro.verificaColunas() == -1)
                return -1;
            if(tabuleiro.verificaDiagonais() == 1)
                return 1;
            if(tabuleiro.verificaDiagonais() == -1)
                return -1;
            if(tabuleiro.verificaEmpate() == 2)
                return 2;
              
            return 0;
        
        }    
                  
}
